이것은 내 문자열의 예입니다."-"다음에 문자열의 내용을 제거하는 방법은 무엇입니까?
$x = "John Chio - Guy";
$y = "Kelly Chua - Woman";
reg 교체 패턴이 필요합니다.
$pattern = ??
$x = preg_replace($pattern, '', $x);
감사
이것은 내 문자열의 예입니다."-"다음에 문자열의 내용을 제거하는 방법은 무엇입니까?
$x = "John Chio - Guy";
$y = "Kelly Chua - Woman";
reg 교체 패턴이 필요합니다.
$pattern = ??
$x = preg_replace($pattern, '', $x);
감사
정규식에 대한 필요가 없습니다. 당신은 explode
를 사용할 수 있습니다
$str = array_shift(explode('-', $str));
$str = substr($str, 0, strpos($str, '-'));
어쩌면 trim
와 함께 선두와 공백을 후행 제거합니다.
업데이트 : @ 마크는 당신이 얻고 자하는 부분에 -
이 있으면 실패 할 것이라고 지적했습니다. 그것은 모두 당신의 가능한 입력에 달려 있습니다.
strrpos
, 사용할 수있는 모든 것을 제거 할 가정 : 당신이 볼 그래서
$str = substr($str, 0, strrpos($str, '-'));
을 필요하지 정규 표현식이 없다;)
이 후 모든 것을 제거하려면 첫 하이픈 당신은 당신의 코드에서이 정규 표현식을 사용할 수 있습니다
"/-[^-]*$/"
:
"/-.*$/"
당신이 정규 표현식을 사용할 수있는 마지막 하이픈 후 모든 것을 제거하려면 결과의 끝에서 공백을 제거하는 것과 이것을 조합 할 수도 있습니다 :
"/\s*-[^-]*$/"
내가
$pattern1='/.+(?=\s-)/' //This will match the string before the " -";
$pattern2='/(?<=\s-\s).+/' //This will match the string after the "- ";
폭발] = 이러한 패턴은 당신을 도울 것입니다 희망 또는 정규 표현식은 잔인한이며,이 시도 :
$str = substr($str, 0, strpos($str,'-'));
또는 여기에 대한 답변 중 하나에서 strtok를 버전을 .
더블 바렐 이름에 실패 : http://ideone.com/Ufu3h 작동 솔루션은 http://stackoverflow.com/questions를 참조하십시오./4705167/how-to-remove-anything-in-a-string-after/4705179 # 4705179 –
사용할 수도 있습니다.
strstr("John Chio - Guy", "-", true) . '-';
세번째 파라미터 true
번째 파라미터의 첫번째 발생하기 전에 모든 반환하는 기능을 말한다.
당신의 솔루션은 '$ str = substr ($ str, 0, strpos ($ str,'- '))); ' 위의 몇 가지 답변에서 주어진대로? 그것이 중첩 된 함수를 사용하지 않는다는 사실에 근거하여, 나는 더 효율적이라고 가정 할 것이지만 반드시 그런 것은 아닙니다. 어떤 생각? –
사용 strstr
기능.
예 :
$my_string = "This is my best string - You like it?";
$my_new_string = strstr($my_string, '-', true);
echo($my_new_string);
이것은 PHP 5.3+에서 작동합니다 –
이것은 약 8 개월 전의 user2453885에서 주어진 답과 근본적으로 같습니다. –
두 번 질주 이름에 대한 실패 : http://ideone.com/NiIA1 –
@ 마크 바이어스 : 따라 달라집니다, 그것은 여전히 그 후의 모든 사항을 제거하는'-' 질문의 요구로 ;)하지만 문제의 구조를 고려할 때, 이것은'-'(공간 빼기)에서 폭발시킴으로써 해결할 수 있습니다. –
+1 솔루션을 수정합니다. :) –