質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

Q&A

解決済

1回答

316閲覧

文字列の置換について

umauman

総合スコア57

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

0グッド

0クリップ

投稿2018/04/10 12:08

編集2018/04/10 12:22

前提・実現したいこと

PHPで下記のような置換をしたく思っています。
ページネーションになります。

php

1//置換前 2<a href="xxxxxx/pagenation/1/">1</a> 3<a href="xxxxxx/pagenation/2/">2</a> 4<a href="xxxxxx/pagenation/3/">3</a> 5・・・ 6 7//置換後 8<a href="xxxxxx/pagenation/1/"><span>1</span></a> 9<a href="xxxxxx/pagenation/2/"><span>2</span></a> 10<a href="xxxxxx/pagenation/3/"><span>3</span></a> 11・・・

下記でひとまず置換することができました。(関数の中身になります。置換後の文字列を返り値にしています)

##これで置換はできるものの...

php

1$render = ''; 2$render = str_replace('/pagenation/'.'1'.'/">', '/pagenation/'.'1'.'/"><span>', $render); 3$render = str_replace('/pagenation/'.'2'.'/">', '/pagenation/'.'2'.'/"><span>', $render); 4$render = str_replace('/pagenation/'.'3'.'/">', '/pagenation/'.'3'.'/"><span>', $render); 5$render = str_replace('/pagenation/'.'4'.'/">', '/pagenation/'.'4'.'/"><span>', $render); 6$render = str_replace('/pagenation/'.'5'.'/">', '/pagenation/'.'5'.'/"><span>', $render); 7return $render;

ただ、ページ数は何ページ、また何桁になるかもわからず、全部を書いていくのは現実的でありません。
これらをまとめて記述する方法を教えていただけませんでしょうか。

勘違いかもしれませんが、正規表現?を使ったら良いのかと思い
調べながら下記のようなものを書いてみましたが反応しませんでした。

##失敗

php

1$render = ''; 2$render = preg_replace('/pagenation/'.'/\d/'.'/">', '/pagenation/'.'/\d/'.'/"><span>', $render); 3return $render;

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yambejp

2018/04/10 12:13

liタグのhref属性自体意味がないと思いますが、条件として間違いないですか?
umauman

2018/04/10 12:23

ご指摘ありがとうございます。おっしゃる通りで...。質問のソースを変更いたしました。
guest

回答1

0

ベストアンサー

たとえばこんな感じ

PHP

1$str=<<<eof 2<a href="xxxxxx/pagenation/1/">1</a> 3<a href="xxxxxx/pagenation/2/">2</a> 4<a href="xxxxxx/pagenation/3/">3</a> 5eof; 6 7$pattern='#(?<=<a href="xxxxxx/pagenation/)((\d+)/">)\2#'; 8$replacement="\1<span>\2</span>"; 9$str=preg_replace($pattern,$replacement,$str); 10 11print $str;

投稿2018/04/10 12:28

yambejp

総合スコア114581

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

umauman

2018/04/10 12:56

ご回答ありがとうございます。 いただいたソースを参考に下記で記述したところうまく置換されました。 $pattern='#((\d+)/">)\2#'; $replacement="\1<span>\2</span>"; $str=preg_replace($pattern,$replacement,$str); 今の所、呪文のようで読み解けませんが... とても助かりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問