問題タブ [preg-replace-callback]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - リンクするphp preg_replace単語ですが、単語をすでにアンカーの一部にすることはできません
私はいくつかの HTML コンテンツを持っています:
そして、すべての「nulla」単語をリンクに置き換えたいのですが、「nulla」が別のリンク URL または他の HTML パラメータ (タイトル、alt) の一部ではない場合に限ります。上記の例では、スクリプトは最初と最後の "nulla" 単語のみを置き換え、他の単語はそのまま残します。私はこの正規表現で立ち往生していますが、私が望むようには機能しません:
php - PHP preg_replace_callback ハッシュ記号 ('#') を処理するための正しいエスケープ
私は Twitter フィードでいくつかの作業を行っており、ハッシュタグをクリック可能な URL に変換したいと考えています。
ハッシュタグは、ハッシュ記号 (「#」) の直後に検索タグとして機能する単語が続くもので、スペースは含まれません。
例は...
ここには #Shoreditch と #AutoClubRev の 2 つのタグがあります。
これらはそれぞれ次のリンクになるはずです...
https://twitter.com/#!/search?q=%23ショアディッチ と https://twitter.com/#!/search?q=%23AutoClubRev
ここでは、バニラの preg_replace だけでなく、preg_replace_callback を使用する必要があると想定しています。これは、後方参照 ($1) を取得して、表示するだけでなく変更しようとしているからです。しかし、もちろん私は間違っているかもしれません。どの機能を使用するかについては、私はあまり気にしません - それが仕事をし、比較的効率的である限り。
ありがとう、ピート
php - PHPPreg置換配列を置き換えます
わかりました、私はそのようなことをしようとしています:
preg_replace("/\{([a-zA-Z0-9_]+)\}/", $templateVariables[$1], $templateString);
今ではそれが不可能であることがわかりましたが、create_functionを使用しようとしたため、これを行う方法があるかどうかを知りたいのですが、$ templateVariablesはそれが含まれる関数のローカル変数であるため、 create_function内から$templateVariablesにアクセスできないため、ここで立ち往生しています。マッチを見つけて何を置き換えるかを考えてから、もう一度見つけて置き換える必要はありません。これはひどく非効率的です。とにかく、無名関数内からローカル変数にアクセスできるのでしょうか、それとも誰か良い提案がありますか?
ありがとう。
php - preg_replace_callback を使用してラテックス コードを識別および操作する
次の形式のどこかにラテックス + html コードがあります。
まず、レンダリングのためにサーバーに送信できるように、配列codes []でラテックスコードを取得したいので、
次に、このテキストを次のように変更します。
つまり、i 番目のラテックス コード フラグメントは、i 番目にレンダリングされたイメージへのリンクに置き換えられます。
私は preg_replace_callback と preg_match_all でこれをやろうとしてきましたが、PHP が初めてなのでうまくいきませんでした。お知らせ下さい。
php - preg_replace_callback() の 2 番目のパラメーター
preg_replace_callback()
PHPの関数に問題があります。2 つのパラメーターを必要とする関数を呼び出したい。
インターネットで、次のコードを見つけました。
しかし、関数 foo では、preg_replace_callback で通常行われる match 配列を使用できません。
あなたが私を助けてくれることを願っています!
php - preg_replace_callback関数を使用してenddivタグを置き換える
HTML文字列内のすべてのdivを、属性を持つ段落(例<div id="1">
)を除く段落に置き換えるPHPスクリプトを開発しようとしています。私のスクリプトが現在最初に行うことは、単純なstr_replace()を使用して、のすべての出現箇所をで置き換えることです。これ<div>
により<p>
、属性と終了divタグ(</div>
)を持つすべてのdivタグが残ります。</div>
ただし、タグをタグに置き換えるの</p>
は少し問題があります。
</div>
これまで、いくつかのタグを</p>
開始タグと一致するタグに変換するように設計されたpreg_replace_callback関数を開発しましたが、属性で終了<p>
する他のタグは無視します。以下は私が使用しているスクリプトです。</div>
<div>
スクリプトは基本的に、残りのすべてのタグ<div>
と</div>
タグを配列に入れて、それをループします。次に、カウンタ変数は、<div>
タグに遭遇するとインクリメント</div>
され、配列内に遭遇するとデクリメントされます。カウンターが0未満の場合は</p>
タグが返され、それ以外の場合はa</div>
が返されます。スクリプトの出力は次のようになります。
代わりに、私が得ている出力は次のとおりです。
スクリプトを思いつく限り編集するのに何時間も費やしましたが、同じ出力が得られ続けています。誰かが私がどこで間違っているのか説明したり、別の解決策を提供したりできますか?
どんな助けでもいただければ幸いです。
php - このpreg_replace_callbackが起動しないのはなぜですか?
以下の2番目のコンテンツフラグメントでこのスクリプトを実行すると、通過します(「コールバック内」エコーが発生します)。
ただし、最初のコンテンツフラグメントで実行すると、最初のエコーを取得したとしても、p_callback()内でエコーを取得することはありません。
コンテンツ内にpreg_replace_callbackをつまずかせる何かがあると思います。問題の原因は何だと思いますか?
最初のコンテンツフラグメントが失敗します:
2番目のコンテンツフラグメントパス:
php - preg_replace(preg_replace_callback?)の第2項または第3項に関数を適用する
コメント/投稿にコードを挿入するための単純な(BBCode)PHPコードを以下に示します。
私ができるようにしたいのは、これらの場所に関数を挿入することです。
SOで読んだことから、使用する必要があるかもしれませんしpreg_replace_callback()
、e-modifierを使用する必要があるかもしれませんが、これを行う方法がわかりません。正規表現に関する私の知識はあまり良くありません。助けていただければ幸いです!
php - preg_replace_callback で文字列の一部を異なる方法で処理する
のすべての出現を置き換える文字列を取得しました[CODE]...[/CODE]
。preg_replace_callback
これらのタグのコンテンツを処理する関数を呼び出すことができます。しかし、それらの出現の周りにあるすべての文字列を操作するにはどうすればよいですか?
例:
さて、この場合preg_replace_callback
は のコンテンツを操作します。しかし、この文字列の他のすべてのテキストについては、別のことをしたいと思います。どうすればこれを最善の方法で行うことができますか?[CODE]
some code
Hello, I am a string with
in it
助けてくれてありがとう!
フロー
php - PHP PREG_REPLACE REGEX メンション ユーザー名
user_model.php
post_model.php
post_helper.php
まず第一に、英語は私の母国語ではありません。ですから、私の文法が悪い場合はご容赦ください。
私の学校の最終プロジェクトでは、Facebook のような Web サイト (ソーシャル ネットワーキング) を作成したいと考えています。私の問題は、ユーザー名(ユーザーデータベース)に基づいてメンション機能を作成したいということです。Facebook で@記号を入力すると、Facebook システムは、クールな ajax リスト表示を使用して、おそらく友人/ページのクエリを開始します。しかし、私はそのようになりたくありません。私のシステムには ajax リスト表示がありません。
ユーザーが @bias または @tegaralaga または @admin "@tegaralaga where are you?" のような文字列でステータス更新を投稿した場合 例として。データベースの私のシステムチェックは、ユーザー名 @tegaralaga を持つユーザーがいるかどうかを確認します。user_first_nameおよびuser_last_nameデータを返します。しかし、いいえの場合、FALSE が返されます。私のユーザーテーブルには、ユーザー名が tegaralaga のユーザーがいて、user_first_name は Bias で、user_last_name は Tegaralaga です。
post_helper.phpに移動します。$name==FALSE の場合、現在の文字列 @tegaralaga が返されます。ただし、ユーザー名が存在する場合は、返されます
存在する場合、文字列は次のようになります
そうでない場合、文字列はまだ
だから私の質問は:
1. 上記の私のコードで preg_replace_callback を使用することは可能ですか? (post_helper.php を見てください)
2. 可能であれば、複数のユーザー名に言及できる場合の完璧な REGEX と、電子メール アドレスの例外 (電子メール アドレスには @ 記号も含まれているため) を教えてください。