My wp post titles currently look like this:
Hamlet (by William Shakespeare)
Romeo and Juliet (by William Shakespeare)
A Midsummer Night's Dream (by William Shakespeare)
etc.
I am using this code:
<?php
echo strtolower(str_replace(' ', '', get_the_title()));
?>
to get each title but I only need the first part of the title without the text that is in parenthesis.
i.e
Hamlet
Romeo and Juliet
A Midsummer Night's Dream
etc.
How can I modify the code so that it will get only the first part of the title without what is in between the parenthesis ?
Loop over each character in the string, adding them to an auxiliary variable. If you hit a (
then stop.
$string = 'Romeo and Juliet (by William Shakespeare)';
$result = '';
for ($i = 0, $l = strlen($string) - 1; $i < $l; $i++) {
if ($string[$i] === '(') {
break;
}
$result .= $string[$i];
}
$string = trim($result);
Find the first parenthesis and then cut out the text before that.
$string = 'Romeo and Juliet (by William Shakespeare)';
$first = strpos($string, '(');
if ($first !== false) {
$string = substr($string, 0, $first);
}
$string = trim($string);
Split the string in half by the first (
. Then use the first part.
$string = 'Romeo and Juliet (by William Shakespeare)';
$parts = explode('(', $string, 2);
$string = trim(array_shift($parts));
Use a regular expression:
$string = 'Romeo and Juliet (by William Shakespeare)';
preg_match('/[^(]+/', $string, $result);
$string = trim(array_shift($result));
And a bonus one! If you are going to do this more than once then a function like this should do the trick. You should probably rename it.
function awesomeness($string) {
$paren = strpos($string, '(');
if ($paren !== false) {
$string = substr($string, 0, $paren);
$string = trim($string);
}
return $string;
}