HTML タグ内の URL を除外しながらテキスト URL を置換するという課題を克服する
問題: テキスト URL をハイパーリンクに変換するのは便利なタスクです。しかし、HTML タグ内の画像やその他の要素にも URL が含まれている場合は、困難になります。特定の例では、ユーザーは、画像ソース属性内に埋め込まれた URL の置換を避けながら、テキスト URL をアンカー タグで置換する方法を探しています。
解決策:
この問題は、XPath 式を使用して URL を含むがアンカー要素の子孫ではないテキスト ノードのみを選択することで解決されます。
XPath 式の改良版は次のとおりです。
$xPath = new DOMXPath($dom); $texts = $xPath->query( '/html/body//text()[ not(ancestor::a) and ( contains(.,"http://") or contains(.,"https://") or contains(.,"ftp://") )]' );
この式は、アンカー タグ内に含まれるテキスト ノードを効果的に除外し、プレーン テキスト URL のみが変換の対象となるようにします。
画像 URL に影響を与えずにテキスト URL を置換する:
画像ソース属性内に埋め込まれた URL の置き換えを回避するために、非標準ではあるが効率的なアプローチが採用されています。テキスト ノードを分割する代わりに、ドキュメント フラグメントを使用してテキスト ノード全体を変更されたバージョンに置き換えます。
このタスクを実行するコードは次のとおりです。
foreach ($texts as $text) { $fragment = $dom->createDocumentFragment(); $fragment->appendXML( preg_replace( "~((?:http|https|ftp)://(?:\S*?\.\S*?))(?=\s|\;|\)|\]|\[|\{|\}|,|\"|'|:|\', $text->data ) ); $text->parentNode->replaceChild($fragment, $text); }
このコードでは、 preg_replace 関数は、テキスト ノード内の URL を検索し、対応するアンカー タグ バージョンに置き換えるのに使用されます。
例:
次の HTML について考えてみましょう:
<code class="html"> <p> This is a text with a <a href="%22http://example.com/1%22">link</a> and another <a href="%22http://example.com/2%22">http://example.com/2</a> and also another http://example.com with the latter being the only one that should be replaced. There is also images in this text, like <img src="%22http://example.com/foo%22/" alt="HTML タグ内の URL を除外しながらテキスト URL をハイパーリンクに置き換える方法" > but these should not be replaced either. In fact, only URLs in text that is no a descendant of an anchor element should be converted to a link. </p> </code>
上記の解決策を適用すると、画像 URL はそのままで、テキスト URL がアンカー タグに変換され、次の出力が生成されます。
<code class="html"> <p> This is a text with a <a href="%22http://example.com/1%22">link</a> and another <a href="%22http://example.com/2%22">http://example.com/2</a> and also another <a href="%22http://example.com%22">http://example.com</a> with the latter being the only one that should be replaced. There is also images in this text, like <img src="%22http://example.com/foo%22/" alt="HTML タグ内の URL を除外しながらテキスト URL をハイパーリンクに置き換える方法" > but these should not be replaced either. In fact, only URLs in text that is no a descendant of an anchor element should be converted to a link. </p> </code>
以上がHTML タグ内の URL を除外しながらテキスト URL をハイパーリンクに置き換える方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

Laravelは、直感的なフラッシュメソッドを使用して、一時的なセッションデータの処理を簡素化します。これは、アプリケーション内に簡単なメッセージ、アラート、または通知を表示するのに最適です。 データは、デフォルトで次の要求のためにのみ持続します。 $リクエスト -

PHPロギングは、Webアプリケーションの監視とデバッグ、および重要なイベント、エラー、ランタイムの動作をキャプチャするために不可欠です。システムのパフォーマンスに関する貴重な洞察を提供し、問題の特定に役立ち、より速いトラブルシューティングをサポートします

PHPクライアントURL(CURL)拡張機能は、開発者にとって強力なツールであり、リモートサーバーやREST APIとのシームレスな対話を可能にします。尊敬されるマルチプロトコルファイル転送ライブラリであるLibcurlを活用することにより、PHP Curlは効率的なexecuを促進します

Laravelは簡潔なHTTP応答シミュレーション構文を提供し、HTTP相互作用テストを簡素化します。このアプローチは、テストシミュレーションをより直感的にしながら、コード冗長性を大幅に削減します。 基本的な実装は、さまざまな応答タイプのショートカットを提供します。 Illuminate \ support \ facades \ httpを使用します。 http :: fake([[ 'google.com' => 'hello world'、 'github.com' => ['foo' => 'bar']、 'forge.laravel.com' =>

顧客の最も差し迫った問題にリアルタイムでインスタントソリューションを提供したいですか? ライブチャットを使用すると、顧客とのリアルタイムな会話を行い、すぐに問題を解決できます。それはあなたがあなたのカスタムにより速いサービスを提供することを可能にします

記事では、PHP 5.3で導入されたPHPの後期静的結合(LSB)について説明し、より柔軟な継承を求める静的メソッドコールのランタイム解像度を可能にします。 LSBの実用的なアプリケーションと潜在的なパフォーマ

この記事では、フレームワークにカスタム機能を追加し、アーキテクチャの理解、拡張ポイントの識別、統合とデバッグのベストプラクティスに焦点を当てています。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

ホットトピック



