2014-01-21 5 views
1

У меня есть эта строка:PHP RegEx - Удалить из char в char?

http://scontent-b.xx.fbcdn.net/hphotos-prn2/t1/c22.0.100.100/p100x100/1489204_568091786618712_2075358603_n.jpg 

Я хочу, чтобы удалить следующие части строки:

c22.0.100.100/p100x100/ 

... Но после части строки является динамическим (изменения):

c22.0.100.100 

Я думаю, что можно использовать функцию PHP preg_ в сочетании с регулярным выражением i каким-то образом? Пример: Удалить Назад /p100x100/ к следующему / ??

У кого-нибудь есть решение этой проблемы?

+3

вы знаете, что строка, которую вы хотите удалить, всегда начинается с 5-го/и заканчивается на 7-м. вам потребуется менее 10 секунд, чтобы придумать решение оттуда, даже не потрудившись с регулярным выражением. – Dave

+1

. Вы должны привести больше примеров того, как 'c22.0.100.100' может измениться. –

+0

У меня есть решение. Но это базовое, попробуйте некоторые регулярные выражения (если вам это нужно, 'explode()' должно быть достаточно) и вернуться с кодом, который вы написали – kero

ответ

1

КОД:

$a = 'http://scontent-b.xx.fbcdn.net/hphotos-prn2/t1/c22.0.100.100/p100x100/1489204_568091786618712_2075358603_n.jpg';; 
    $b = preg_replace("/[^\/]*\/p100x100\//",'',$a); 
    echo 'A: '.$a."\n"; 
    echo 'B: '.$b."\n"; 

Это регулярное выражение [^\/]*\/p100x100\/ заменяет ...

  • [^\/]* как многие не - '/'
  • \/p100x100\/ сопровождающегося/p100x100/
  • '' с не Хин

ВЫВОД:

A: http://scontent-b.xx.fbcdn.net/hphotos-prn2/t1/c22.0.100.100/p100x100/1489204_568091786618712_2075358603_n.jpg 
B: http://scontent-b.xx.fbcdn.net/hphotos-prn2/t1/1489204_568091786618712_2075358603_n.jpg 
+0

Спасибо @Gavin! Работал как шарм :-) –

0
preg_replace('¦/t1/.*/p100x100/¦', '/t1/', $string) 

может бросить некоторые смешные проблемы, хотя использование. *, Но без какой-либо другой информации о том, что может быть сменная строка это лучшее, что можно сделать.

Какова ваша конечная цель? то, что он делает то, что это нужно сделать, и почему, это все части головоломки, которые помогут людям ответить :)

+0

Спасибо, Бен. Я вернусь завтра .. "/ t1 /" не всегда является частью строки :-( –

+0

'preg_replace ('~ [^ /] +/p100x100/~', '', $ string);' I haven ' t попробовал, но это может сработать для удаления этих двух каталогов. Может потребоваться некоторая настройка. –

0

Делай так, чтобы удалить c22.0.100.100/p100x100/

<?php 
$str="http://scontent-b.xx.fbcdn.net/hphotos-prn2/t1/c22.0.100.100/p100x100/1489204_568091786618712_2075358603_n.jpg"; 

    echo preg_replace('~(?<=t1).*(?=\/)~',"",$str); 

Demo

0

Как насчет:

preg_replace('~/c\d+(?:\.\d+){3}/p100x100\b~', '', $str) 
Смежные вопросы