шаблон preg_replace не работает

0

Я пытаюсь удалить часть из запроса SQL WHERE. Хотя в Regexpal у меня нет проблем с моим шаблоном, когда я preg_replace выражение в preg_replace он НЕ работает.

Пример оригинального не измененного запроса. Часть WHERE:

WHERE 1=1 AND ( wp_term_relationships.term_taxonomy_id IN (800,801) ) AND wp_posts.post_type = 'service_photo' AND (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'private') AND ( wp_postmeta.meta_key = 'custom_meta_partner_subscription_level' ) 

Мой код и шаблон:

$where = preg_replace("(AND \( wp_term_relationships\.term_taxonomy_id IN \([0123456789,]*\) \))", "", $where);
    return $where;

Вы знаете, что я не так?

PHP: 5.4.19

благодаря

  • 0
    Это работает для меня - вы присвоили эту строку переменной $where ? Почему вы возвращаете его, вы можете повторить его, чтобы проверить
  • 0
    Мой результат: WHERE 1=1 AND wp_posts.post_type = 'service_photo' AND (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'private') AND ( wp_postmeta.meta_key = 'custom_meta_partner_subscription_level' )
Показать ещё 2 комментария
Теги:
preg-replace

1 ответ

0

Вот пример кода, показывающий использование вашего регулярного выражения в PHP:

$re = "/(AND \\( wp_term_relationships\\.term_taxonomy_id IN \\([0-9,]*\\) \\))/"; 
$str = "WHERE 1=1 AND ( wp_term_relationships.term_taxonomy_id IN (800,801) ) AND wp_posts.post_type = 'service_photo' AND (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'private') AND ( wp_postmeta.meta_key = 'custom_meta_partner_subscription_level' )"; 

$str = preg_replace($re, "", $str);

См. Здесь.

[0123456789,] можно безопасно заменить на [0-9,].

  • 0
    Regex101 - отличный совет, спасибо. Ваш код работает как талисман, но, как я обнаружил, моя строка $ where содержит переносы строк. Не могли бы вы помочь мне создать скороговорку в этом случае? см. рис .: tinypic.com/r/2w5kjtj/8

Ещё вопросы

Сообщество Overcoder
Наверх
Меню