簡體   English   中英

preg_match_all用於此模式

[英]preg_match_all for this pattern

我有這種模式,我用它來提取/圖像/字段后的數字,我已經嘗試過這種模式,我已經在線檢查了http://www.functions-online.com/preg_match_all.html它是為第一個鏈接提供所需的輸出但是對於其他鏈接,它沒有給出所需的輸出,這是我的模式

  /\sample.com\/image\/(.*)\//

這是我的字符串

     Mario Ermito photos by sample.com Mario Ermito Latest News, Photos, Biography, Videos and Wallpapers [img]http://xyz.sample.com/image/4205476/600full-mario-ermito.jpg[/img][img]http://xyz.sample.com/image/4453948/600full-my-profile.jpg[/img][img]http://xyz.sample.com/image/427185/600full-eagle-eye-poster.jpg[/img][img]http://xyz.sample.com/image/1323868/600full-alexis-bledel.jpg[/img][img]http://xyz.sample.com/image/2505314/600full-monroe-lee.jpg[/img][img]http://xyz.sample.com/image/3300481/600full-cindy-crawford.jpg[/img][img]http://xyz.sample.com/image/1046646/600full-pitura-freska.jpg[/img][img]http://xyz.sample.com/image/4322305/600full-kristin-kreuk.jpg[/img][img]http://xyz.sample.com/image/4261476/600full-kang-so--ra.jpg[/img][img]http://xyz.sample.com/image/3386911/600full-summer-brielle.jpg[/img][img]http://xyz.sample.com/image/4663949/600full-the-closer-artwork.jpg[/img]

例如

我想在/ image / field之后只提取數字我不想要圖像名稱我想要的輸出

     4205476
     4453948
      427185

等所有來自字符串的數字

使用此正則表達式~\\/\\image\\/(.*?)\\/~

<?php
$str='     Mario Ermito photos by sample.com Mario Ermito Latest News, Photos, Biography, Videos and Wallpapers [img]http://xyz.sample.com/image/4205476/600full-mario-ermito.jpg[/img][img]http://xyz.sample.com/image/4453948/600full-my-profile.jpg[/img][img]http://xyz.sample.com/image/427185/600full-eagle-eye-poster.jpg[/img][img]http://xyz.sample.com/image/1323868/600full-alexis-bledel.jpg[/img][img]http://xyz.sample.com/image/2505314/600full-monroe-lee.jpg[/img][img]http://xyz.sample.com/image/3300481/600full-cindy-crawford.jpg[/img][img]http://xyz.sample.com/image/1046646/600full-pitura-freska.jpg[/img][img]http://xyz.sample.com/image/4322305/600full-kristin-kreuk.jpg[/img][img]http://xyz.sample.com/image/4261476/600full-kang-so--ra.jpg[/img][img]http://xyz.sample.com/image/3386911/600full-summer-brielle.jpg[/img][img]http://xyz.sample.com/image/4663949/600full-the-closer-artwork.jpg[/img]';
preg_match_all('~\/\image\/(.*?)\/~', $str, $matches);
print_r($matches[1]);

OUTPUT :

Array
(
    [0] => 4205476
    [1] => 4453948
    [2] => 427185
    [3] => 1323868
    [4] => 2505314
    [5] => 3300481
    [6] => 1046646
    [7] => 4322305
    [8] => 4261476
    [9] => 3386911
    [10] => 4663949
)

enter image description here

您需要調整正則表達式:

$regex = '@sample\.com/image/([0-9]+)/@'

preg_match_all('@sample\.com/image/([0-9]+)/@', $str, $m);
print_r($m);

預期產量:

Array
(
    [0] => Array
        (
            [0] => sample.com/image/4205476/
            [1] => sample.com/image/4453948/
            [2] => sample.com/image/427185/
            [3] => sample.com/image/1323868/
            [4] => sample.com/image/2505314/
            [5] => sample.com/image/3300481/
            [6] => sample.com/image/1046646/
            [7] => sample.com/image/4322305/
            [8] => sample.com/image/4261476/
            [9] => sample.com/image/3386911/
            [10] => sample.com/image/4663949/
        )

    [1] => Array
        (
            [0] => 4205476
            [1] => 4453948
            [2] => 427185
            [3] => 1323868
            [4] => 2505314
            [5] => 3300481
            [6] => 1046646
            [7] => 4322305
            [8] => 4261476
            [9] => 3386911
            [10] => 4663949
        )

)

現在你需要記住PHP將返回它匹配的所有內容,包括正則表達式字符串的不需要的部分。

從PHP手冊: http//www.php.net/manual/en/function.preg-match-all.php

對結果進行排序,以便$ matches [0]是完整模式匹配的數組,$ matches [1]是由第一個帶括號的子模式匹配的字符串數組,依此類推。

嘗試這個:

/.*sample\.com\/image\/(\d+)\/.*/

正則表達式可視化

Debuggex演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM