贪婪模式正则匹配的问题
正文:
<code>$content = 'http://www.taobao.com http://mai.taobao.com http://xx.uz.taobao.com http://yy.uz.taobao.com '; </code>
期望得到:
<code>[0] => http://xx.uz.taobao.com [1] => http://yy.uz.taobao.com </code>
方法一:
<code>$pat = '/http:\/\/(.*)\.uz\.taobao\.com/is'; </code>
结果:
<code>[0] => http://www.taobao.com http://mai.taobao.com http://xx.uz.taobao.com http://yy.uz.taobao.com </code>
方法二:
<code>$pat = '/http:\/\/(.*)\.uz\.taobao\.com/iUs'; </code>
结果:
<code>[0] => http://www.taobao.com http://mai.taobao.com http://xx.uz.taobao.com [1]=>http://yy.uz.taobao.com </code>
请问想得到我期望的值应该怎么写呢?
回复内容:
正文:
<code>$content = 'http://www.taobao.com http://mai.taobao.com http://xx.uz.taobao.com http://yy.uz.taobao.com '; </code>
期望得到:
<code>[0] => http://xx.uz.taobao.com [1] => http://yy.uz.taobao.com </code>
方法一:
<code>$pat = '/http:\/\/(.*)\.uz\.taobao\.com/is'; </code>
结果:
<code>[0] => http://www.taobao.com http://mai.taobao.com http://xx.uz.taobao.com http://yy.uz.taobao.com </code>
方法二:
<code>$pat = '/http:\/\/(.*)\.uz\.taobao\.com/iUs'; </code>
结果:
<code>[0] => http://www.taobao.com http://mai.taobao.com http://xx.uz.taobao.com [1]=>http://yy.uz.taobao.com </code>
请问想得到我期望的值应该怎么写呢?
$content = 'http://www.taobao.com http://mai.taobao.com http://xx.uz.taobao.com http://yy.uz.taobao.com '; preg_match_all('/(https?:\/\/[^.]+\.uz\.taobao\.com)/i', $content, $match); print_r($match[1]);
so easy.
<code><?php $content = 'http://www.taobao.com http://mai.taobao.com http://xx.uz.taobao.com http://yy.uz.taobao.com '; $pattern = '/http:\/\/[^\/]*?\.uz\.taobao\.com/is'; preg_match_all($pattern, $content, $result); var_dump($result); // output array(1) { [0] => array(2) { [0] => string(23) "http://xx.uz.taobao.com" [1] => string(23) "http://yy.uz.taobao.com" } } </code>
<code>$content = '<a href="http://www.taobao.com"> sdfasdfasfas sdfsfasf http://mai.taobao.com http://xx.uz.taobao.com http://yy.uz.taobao.com '; $urls = explode('http://', $content); array_shift($urls); $res = []; foreach($urls as &$url) { $item = explode('taobao.com', $url); $url = "http://{$item[0]}taobao.com"; if(preg_match('/uz\.taobao\.com/', $url)) $res[] = $url; } print_r($res); //Array ( [0] => http://xx.uz.taobao.com [1] => http://yy.uz.taobao.com ) </code>
<code>$content = '<a href="http://www.taobao.com"> sdfasdfasfas sdfsfasf http://mai.taobao.com http://xx.uz.taobao.com http://yy.uz.taobao.com '; preg_match_all('/(http[^taobao]*?uz\.taobao\.com)/i', $content, $match); print_r($match[1]); //Array ( [0] => http://xx.uz.taobao.com [1] => http://yy.uz.taobao.com ) </code>
另有一个小建议是:一步分成两步,先把URL分拆,再对每个URL做匹配。这样可以增强语义的直观性。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

CakePHP へのログインは非常に簡単な作業です。使用する関数は 1 つだけです。 cronjob などのバックグラウンド プロセスのエラー、例外、ユーザー アクティビティ、ユーザーが実行したアクションをログに記録できます。 CakePHP でのデータのログ記録は簡単です。 log()関数が提供されています

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

CakePHP はオープンソースの MVC フレームワークです。これにより、アプリケーションの開発、展開、保守がはるかに簡単になります。 CakePHP には、最も一般的なタスクの過負荷を軽減するためのライブラリが多数あります。
