ホームページ > バックエンド開発 > PHPチュートリアル > PHPで定期的なローテーションを探しています

PHPで定期的なローテーションを探しています

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
リリース: 2016-06-13 12:52:47
オリジナル
903 人が閲覧しました

PHP で文字 cjy/dongnanya/flb-mnl/xianlu を cjy/dongnanya-flb-mnl-xianlu
に置き換える通常の置換
を探しています。
つまり、最初の「/」を除く元の文字は置換されず、他の文字は「-」に置き換えられます。

php
-----解決策---------
$s = 'cjy/dongnanya/flb-mnl/xianlu';<br />
<br />
//方法一<br />
$t = preg_replace('#/#', '-', $s);<br />
$t = preg_replace('#-#', '/', $t, 1);<br />
echo $t;<br />
<br />
//方法二<br />
$n = 0;<br />
echo preg_replace_callback('#/#', 'foo', $s);<br />
<br />
function foo($r) {<br />
  global $n;<br />
  if($n++) return '-';<br />
  return $r[0];<br />
}<br />
<br />
ログイン後にコピー

------解決策----------------------
引用:
引用:私はまだ一行書いたら差し替えられるタイプが好きなのですが、これはどうでしょうか?

PHP コード?1234
ありがとう、あなたのやり方が一番簡単ですね、説明してもらえますか、ありがとう...


(?<=/)(.*?)/

(?<=コンテンツ 1) コンテンツ 2: 「コンテンツ 2」に一致し、「コンテンツ 2 の前にコンテンツ 1 がある」ことを主張します。端的に言えば、「コンテンツ 2」に一致します。コンテンツ 1 がありません。その前に一致が失敗しました。
(.*?)/: 「/」が一致するまで、できるだけ少ない文字と一致します。

全体の意味は、できるだけ少ない文字と一致することです。この文字は「/」で終わりますが、同時に、正常に一致するためにはこの文字の前に「/」が必要であることが主張され、その後置換されます。文字自体を入力しますが、末尾の「/」を「-」に置き換えます。

理解できるかどうかはわかりません。
------解決策---------
引用:
preg_replace("#(?<=/)(.*?)/#", '1-', $str);

申し訳ありませんが、後でメモリ 1 に置き換えられる文字ページがメモリ 2 にない理由がまだわかりません

次回他の人に返信するときは、忘れずに引用してください。
(?=)(?<=)(?!)(?) および (?:) と同様にアサーションであり、キャプチャ メモリには記録されません。
括弧にはさまざまな用途があります。私の記憶が正しければ (?#) はコメントです。
時間があるときにルールを深く理解することをお勧めします。知識ポイントはそれほど多くないので、残りは練習してください。
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート